package main

import (
	"github.com/quarkcloudio/quark-go/v2/pkg/builder"
	"github.com/wsl/hi-go/config"
	"github.com/wsl/hi-go/handler"
	dbManager "github.com/wsl/hi-go/plugins/db"
	customHandle "github.com/wsl/hi-go/plugins/middleware/customHandle"
	systemLog "github.com/wsl/hi-go/plugins/systemLog"
	templateRender "github.com/wsl/hi-go/plugins/templateRender"
	"github.com/wsl/hi-go/service"
)

func main() {

	// 数据库初始化
	b := (&dbManager.DB{}).InitDB()

	// 中间件
	b.Use(func(c *builder.Context) error {
		return c.Next()
	})
	// WEB根目录
	b.Static("/", config.APP.WebRootFile)

	// 模版渲染
	(&templateRender.Template{}).CreateTemplateRender(b)

	// 日志
	(&systemLog.SystemLog{}).CreateLog(b)

	// 鉴权
	memberApi := b.Group("api/member")
	{
		// 学生列表
		memberApi.GET("/student/index", (&customHandle.CustomHandle{}).GlobalCustomHandler((&service.StudentService{}).StudentList))
	}

	// 公共
	api := b.Group("api/v1")
	{
		// 事例
		api.GET("/hello", (&customHandle.CustomHandle{}).GlobalCustomHandler((&handler.User{}).Hello))
		api.GET("/create", (&customHandle.CustomHandle{}).GlobalCustomHandler((&handler.User{}).Create))
		api.GET("/update", (&customHandle.CustomHandle{}).GlobalCustomHandler((&handler.User{}).Update))
		api.GET("/userIndex", (&customHandle.CustomHandle{}).GlobalCustomHandler((&handler.User{}).UserIndex))
		api.GET("/getToken", (&customHandle.CustomHandle{}).GlobalCustomHandler((&handler.User{}).GetToken))
		api.GET("/parseToken", (&customHandle.CustomHandle{}).GlobalCustomHandler((&handler.User{}).ParseToken))
		api.GET("/parseTokenHeader", (&customHandle.CustomHandle{}).GlobalCustomHandler((&handler.User{}).ParseTokenHeader))
		api.GET("/homeIndex", (&customHandle.CustomHandle{}).GlobalCustomHandler((&handler.User{}).HomeIndex))

		// 正式
		// 获取验证码
		api.GET("/getCaptcha", (&customHandle.CustomHandle{}).GlobalCustomHandler((&service.Captcha{}).GetCaptcha))
		// 登录
		api.POST("/login", (&customHandle.CustomHandle{}).GlobalCustomHandler((&service.User{}).Login))
		// 注册
		api.POST("/register", (&customHandle.CustomHandle{}).GlobalCustomHandler((&service.User{}).Register))
		// 用户列表
		api.GET("/user/list", (&customHandle.CustomHandle{}).GlobalCustomHandler((&service.User{}).UserIndex))
		// 用户删除
		api.GET("/user/delete", (&customHandle.CustomHandle{}).GlobalCustomHandler((&service.User{}).UserDelete))
		// 用户更新
		api.POST("/user/update", (&customHandle.CustomHandle{}).GlobalCustomHandler((&service.User{}).UserUpdate))
		// 用户详情
		api.GET("/user/detail", (&customHandle.CustomHandle{}).GlobalCustomHandler((&service.User{}).UserDetail))

		// 创建学生
		api.GET("/student/create", (&customHandle.CustomHandle{}).GlobalCustomHandler((&service.StudentService{}).CreateStudent))
		// 学生列表
		api.GET("/student/index", (&customHandle.CustomHandle{}).GlobalCustomHandler((&service.StudentService{}).StudentList))
		// 更改学生班级信息
		api.GET("/student/changeClass", (&customHandle.CustomHandle{}).GlobalCustomHandler((&service.StudentService{}).StudentChangeClassInfo))
		// 创建班级
		api.GET("/class/create", (&customHandle.CustomHandle{}).GlobalCustomHandler((&service.ClassService{}).CreateClass))
	}

	b.Run(":8081")
}
